﻿using System;
using System.Collections.Generic;
using System.ComponentModel.DataAnnotations;
using System.ComponentModel.DataAnnotations.Schema;
using System.Data.Entity;
using System.Globalization;
using System.Web.Security;

namespace ProjectHopur23.Models
{
	[Table("UserProfile")]
	public class UserProfile
	{
		[Key]
		[DatabaseGeneratedAttribute(DatabaseGeneratedOption.Identity)]
        public int UserId { get; set; }
		[RegularExpression("^[a-z,A-Z,0-9]{1,20}", ErrorMessage = "Má bara innihalda alþjóðlega bókstafi og tölustafi. Ekki fleiri en 20.")]
		public string UserName { get; set; }
		public string email { get; set; }
		public int score { get; set; }
		public bool isLoggedIn { get; set; }
	}

	public class RegisterExternalLoginModel
	{
		[Required]
		[Display(Name = "Notandanafn")]
		public string UserName { get; set; }

		public string ExternalLoginData { get; set; }
	}

	public class LocalPasswordModel
	{
		[Required]
		[DataType(DataType.Password)]
		[RegularExpression("^[a-z,A-Z,0-9]{1,20}", ErrorMessage = "Má bara innihalda alþjóðlega bókstafi og tölustafi. Ekki fleiri en 20.")]
		[Display(Name = "Núverandi lykilorð")]
		public string OldPassword { get; set; }

		[Required]
        [StringLength(100, ErrorMessage = "{0} þarf að innihalda a.m.k. {2} stafi.", MinimumLength = 6)]
		[DataType(DataType.Password)]
		[RegularExpression("^[a-z,A-Z,0-9]{1,20}")]
		[Display(Name = "Nýtt lykilorð")]
		public string NewPassword { get; set; }

		[DataType(DataType.Password)]
		[Display(Name = "Staðfesta nýtt lykilorð")]
        [Compare("NewPassword", ErrorMessage = "Nýtt lykilorð og staðfest lykilorð eru ekki eins.")]
		public string ConfirmPassword { get; set; }
	}

	public class LoginModel
	{
		[Required]
		[RegularExpression("^[a-z,A-Z,0-9]{1,20}", ErrorMessage = "Má bara innihalda alþjóðlega bókstafi og tölustafi. Ekki fleiri en 20.")]
		[Display(Name = "Notandanafn")]
		public string UserName { get; set; }

		[Required]
		[RegularExpression("^[a-z,A-Z,0-9]{1,20}", ErrorMessage = "Má bara innihalda alþjóðlega bókstafi og tölustafi. Ekki fleiri en 20.")]
		[DataType(DataType.Password)]
		[Display(Name = "Lykilorð")]
		public string Password { get; set; }

		[Display(Name = "Muna eftir mér?")]
		public bool RememberMe { get; set; }
	}

	public class RegisterModel
	{
		[Required]
		[RegularExpression("^[a-z,A-Z,0-9]{1,20}", ErrorMessage = "Má bara innihalda alþjóðlega bókstafi og tölustafi. Ekki fleiri en 20.")]
		[Display(Name = "Notandanafn")]
		public string UserName { get; set; }

        [Required]
		[DataType(DataType.EmailAddress, ErrorMessage = "Þetta er ekki leyfilegt netfang")]
		[EmailAddress]
        [Display(Name = "Netfang")]
        public string email { get; set; }

		[Required]
		[StringLength(100, ErrorMessage = "{0} þarf að innihalda a.m.k. {2} stafi.", MinimumLength = 6)]
		[RegularExpression("^[a-z,A-Z,0-9]{1,20}")]
		[DataType(DataType.Password)]
		[Display(Name = "Lykilorð")]
		public string Password { get; set; }

		[DataType(DataType.Password)]
		[Display(Name = "Staðfesta lykilorð")]
		[Compare("Password", ErrorMessage = "Lykilorð og staðfest lykilorð eru ekki eins.")]
		public string ConfirmPassword { get; set; }
	}

	public class ExternalLogin
	{
		public string Provider { get; set; }
		public string ProviderDisplayName { get; set; }
		public string ProviderUserId { get; set; }
	}
}
